Snowball_233

Snowball_233

A student who is learning coding.

サーバーのコアとJDKのリリースに過度に注意する必要はありません。

近期、苦力怕フォーラムのサーバープラグインセクションのグループ(グループ番号 332359582)で最も頻繁に尋ねられる質問は、「どのサーバーコアを選ぶべきですか?Folia は使えますか?Oracle を使うべきですか?Zulu を使うべきですか?パフォーマンス分析には Spark を使うべきですか?Timing を使うべきですか?」など、実際には重要ではない質問です。

これらの質問を見た後、私は 1 つの問題に気づきました。私のワールドの開設コストが徐々に低下するにつれて、ますます多くの初心者がサーバーを開設しようとしていることに気づきました。彼らはサーバーをより良くするために努力したいと考えていますが、そのために彼らは間違ったことに焦点を当てています。本当のサーバーオーナーは、コンテンツ、バランス、コミュニティ、プレイヤーに焦点を当てる必要があります。次に、なぜ他のことに過度に注意を払わないほうがいいのかを説明します。

サーバーコアの選択#

現在、市場には次のような Java サーバーコアが主に存在します:

タイプ名称適用範囲
オリジナルバニラMinecraft 公式サーバーで、プラグインやモジュールをロードできません
プラグインのみBukkit、Spigot、Paper、PurPur、Pufferfish、Foliaプラグインのみをロードできるサーバーで、モジュールをロードすることはできません
モジュールのみForge、Fabric、SpongeForgeモジュールのみをロードできるサーバーで、サーバープラグインをロードすることはできません
ハイブリッドCatServer、Mohist、Banner、Arclightサーバープラグインとモジュールの両方を同時にロードできます

その中で最も議論の多いトピックは、「Folia を使用すべきか?」というものです。この質問は、明らかに Folia がマルチスレッドで有名であることに触発されていますが、Folia の公式ウェブサイトのサーバーコアの位置づけを再度読んでみましょう。

Foliaは、シングルスレッドで実行されるMinecraftサーバーの持続的なボトルネックに対処するために設計されています。それはPaperの代替品ではありません。
---------
Foliaは、シングルスレッドで実行されるMinecraftサーバーの持続的なボトルネックに対処するために設計されています。それはPaperの代替品ではありません。

この文をじっくり考えてみると、本当に Folia が必要なのでしょうか?「それは Paper の代替品ではありません。」という簡潔な文は、Folia と Paper サーバーコアが異なることを明確に示しています。具体的には、ゲームの体験、プラグインの互換性、安定性など、多くの点で Paper サーバーコアとは大きく異なり、多くのオリジナルの機能を破壊してしまいます。本当に究極のパフォーマンスのために、これらすべての内容を犠牲にすることを望むのでしょうか?

さらに、Folia の公式が推奨する設定を見てみましょう。

Foliaはどのハードウェアで最も良く動作しますか?
理想的には、少なくとも16コア(スレッドではありません)が必要です。

では、あなたのサーバーのハードウェア設定は本当に推奨されている設定に達していますか?推奨設定よりも低い状態でも、パフォーマンスが従来の Paper サーバーコアよりも優れていることをどのように保証しますか?

JDK の選択#

「JDK(Java Development Kit)は、開発者が使用するためのキットであり、JDK には JRE(Java Runtime Environment)が含まれています。JVM(Java Virturl Machine)は JRE の一部であり、すべての Java プログラムは JVM 上で実行されます。」

現在、Minecraft サーバーでよく使用される JDK のリリースには、OpenJDK、Azul Zulu、GraalVM、Oracle JDK などがあります。

その中で、最も議論の多い OpenJDK と Azul Zulu の 2 つのリリースを例にしてテストを行いました。テストスクリプトは以下の通りです。

クリックしてプレビュー
#! /bin/bash

JVM_OPENJDK=openjdk-17.0.2
JVM_ZULU=zulu17.34.19-ca-jdk17.0.3-linux_x64

sudo rm -rf /home/server/jdks/test/logs*

for JVM_NAME in $JVM_OPENJDK $JVM_TEMURIN $JVM_SEMERU $JVM_ZULU $JVM_ZING; do

    echo '========================================'
    echo "Start testing $JVM_NAME"
    echo '========================================'

    sudo rm -rf /home/server/jdks/test/world

    mkdir logs
    sudo nice -n -20 /home/server/jdks/$JVM_NAME/bin/java \
              -Xmx6G -Xms6G -Xlog:gc:logs/gc.log -Xlog:gc* \
              -jar server.jar nogui | tee logs/full.log

    chmod 777 -R /home/server/jdks/test/logs
    mv -v /home/server/jdks/test/logs /home/server/jdks/test/logs-$JVM_NAME

    echo '========================================'
    echo "Finish testing $JVM_NAME"
    echo '========================================'

done

テスト結果は以下の通りです。

JDKChunky の所要時間平均停止時間(ミリ秒)平均 GC 間隔(秒)
OpenJDK9 分 01 秒50.68
Azul Zulu9 分 15 秒53.47

明らかに、最も議論の多い 2 つのリリースでも、最終的なテスト結果はほとんど変わりません。実際の使用と体験では、その違いを感じることはほとんどありません。

結論#

以上から、サーバーコアや JDK の選択など、このような問題に過度に注意を払うことはありません。代わりに、より多くの時間をゲームコンテンツの充実と最適化に費やすべきです。なぜなら、プレイヤーが本当に関心を持っているのは、ゲームの楽しさと体験であり、あなたがどの技術的な解決策を選んだかではありません。あなたのサーバーのコンテンツ構築により多くの時間を費やし、プレイヤーがより多くの楽しみと思い出を得られるようにしてください。

この記事はMix Spaceから xLog に同期されています。
元のリンクはhttps://blog.rescueme.life/posts/develop/donot-pay-too-much-attention-to-server-core-and-JDKです。


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。